/**********************************************************************
 * <pre>
 * FILE : DateUtil.java
 * CLASS : DateUtil
 *
 * AUTHOR : SuMMeR
 *
 * FUNCTION : TODO
 *
 *
 *======================================================================
 * CHANGE HISTORY LOG
 *----------------------------------------------------------------------
 * MOD. NO.| DATE | NAME | REASON | CHANGE REQ.
 *----------------------------------------------------------------------
 * 		  |2009-9-3| SuMMeR| Created |
 * DESCRIPTION:
 * </pre>
 ***********************************************************************/
/**
 * $Id: DateUtil.java,v 1.1 2010/08/16 01:44:18 yuch Exp $
 */

package com.infodms.dms.common;

import java.text.ParseException;
import java.util.Calendar;
import java.util.Date;

import com.infodms.dms.util.DateTimeUtil;

/**
 * 处理时间转换及格式工具类
 */
public class DateUtil
{

	/**
	 * 字符格式时间转换为Date 暂时只支持yyyy-MM-dd和yyyy/MM/dd格式
	 * 
	 * @param date
	 *            字符串格式的时间,如yyyy-MM-dd和yyyy/MM/dd
	 * @param token
	 *            时间分割符,如"/","-"
	 * @return
	 */
	public static Date str2Date(String date, String token)
	{
		Calendar cal = str2Cal(date, token);
		return cal.getTime();
	}

	/**
	 * 字符格式时间转换为Calendar 暂时只支持yyyy-MM-dd和yyyy/MM/dd格式
	 * 
	 * @param date
	 *            字符串格式的时间,如yyyy-MM-dd和yyyy/MM/dd
	 * @param token
	 *            时间分割符,如"/","-"
	 * @return
	 */
	public static Calendar str2Cal(String date, String token)
	{
		String[] dateArray = date.split(token);
		int year = Integer.valueOf(dateArray[0]).intValue();
		int month = Integer.valueOf(dateArray[1]).intValue();
		int day = Integer.valueOf(dateArray[2]).intValue();
		Calendar cal = Calendar.getInstance();
		cal.set(year, month, day);
		return cal;
	}

	/**
	 * 根据Date对象获取改对象的年份
	 * 
	 * @param date
	 * @return
	 */
	public static String getYearByDate(Date date)
	{
		return getPartByDate(date, 0);
	}

	/**
	 * 根据Date对象获取改对象的月份
	 * 
	 * @param date
	 * @return
	 */
	public static String getMonthByDate(Date date)
	{
		return getPartByDate(date, 1);
	}

	/**
	 * 根据Date对象获取改对象的月日期(当月第几号)
	 * 
	 * @param date
	 * @return
	 */
	public static String getDayByDate(Date date)
	{
		return getPartByDate(date, 2);
	}

	/**
	 * 根据Date对象获取改对象的年,月,日部分
	 * 
	 * @param date
	 * @param pos
	 * @return
	 */
	@SuppressWarnings("finally")
	public static String getPartByDate(Date date, int pos)
	{
		String part = "";
		try
		{
			String dateStr = DateTimeUtil.parseDateToDate(date);
			part = dateStr.split("-")[pos];
		}
		catch (ParseException e)
		{
			e.printStackTrace();
		}
		finally
		{
			return part;
		}
	}

	public static void main(String[] args) throws ParseException
	{
		// 获得提报起始周
		Calendar c = Calendar.getInstance();
		c.add(Calendar.DATE, -7);
		String dayStr = DateTimeUtil.parseDateToDate(c.getTime());
		System.out.println("--"+dayStr);
		System.out.println(getPartByDate(new Date(), 4));
	}
}
